package com.itheima.health.dao;

import com.github.pagehelper.Page;
import com.itheima.health.pojo.CheckItem;
import com.itheima.health.pojo.TSaveItemgroup;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * (TSaveItemgroup)表数据库访问层
 *
 * @author makejava
 * @since 2021-04-21 11:21:39
 */
@Mapper
@Repository
public interface TSaveItemgroupMapper{

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    TSaveItemgroup queryById(Integer id);

    /**
     * 查询指定行数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<TSaveItemgroup> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);


    /**
     * 通过实体作为筛选条件查询
     *
     * @param tSaveItemgroup 实例对象
     * @return 对象列表
     */
    List<TSaveItemgroup> queryAll(TSaveItemgroup tSaveItemgroup);

    /**
     * 新增数据
     *
     * @param tSaveItemgroup 实例对象
     * @return 影响行数
     */
    int insert(TSaveItemgroup tSaveItemgroup);

    /**
     * 修改数据
     *
     * @param tSaveItemgroup 实例对象
     * @return 影响行数
     */
    int update(TSaveItemgroup tSaveItemgroup);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Integer id);

    Page<TSaveItemgroup> selectByCondition(String queryString);

    int selectCount(TSaveItemgroup tSaveItemgroup);

    @Select("SELECT t_checkitem.*  FROM t_setmeal, t_checkgroup, t_setmeal_checkgroup, t_checkgroup_checkitem, t_checkitem  WHERE t_setmeal_checkgroup.setmeal_id = t_setmeal.id  AND t_setmeal_checkgroup.checkgroup_id = t_checkgroup.id  AND t_checkgroup.id = t_checkgroup_checkitem.checkgroup_id AND t_checkitem.id = t_checkgroup_checkitem.checkitem_id AND t_setmeal.id = #{id}")
    List<CheckItem> queryItemBySetmeal(Integer id);

    // TODO 缺少连接套餐的实现，查到的套餐不对
    /**
     * @Author: lenovo
     * @Date: 9:04 2021/4/23
     * @Parms [id]
     * @ReturnType: java.util.Map<java.lang.String,java.lang.Object>
     * @Description: 通过id查找数据
    */
    @Select("SELECT t2.name as member, t3.name as setmeal, t1.orderDate FROM t_setmeal t3,t_save_itemgroup t1 RIGHT JOIN  t_member t2 ON t1.member_id = t2.id  WHERE t1.id =#{id}")
    Map<String, Object> findById(Integer id);
}
